#!/usr/bin/env node

// node cli 应用入口文件必须要有这样的文件头
// 如果是Linux 或者 macOS 需要修改此文件的读写权限为 755
// 具体就是通过 chmod 755 cli.js 实现修改

// 脚手架的工作过程：
// 1. 通过命令行交互询问用户问题
// 2. 根据用户回答的结果生成文件

const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')
const ejs = require('ejs')

// 用于发起命令行的询问
inquirer.prompt([
    // 通过命令行交互询问用户问题
    {
        type: 'input',
        name: 'name',
        message: 'Project name'
    }
])
.then(answers => {
    // console.log(answers);
    // 根据用户回答的结果生成文件

    // 模板目录
    const tmplDir = path.join(__dirname, 'templates')
    // 目标目录  在哪个目录运行就是目标目录
    const desDir = process.cwd()

    // 将模板下的文件全部转换到目标目录
    fs.readdir(tmplDir, (err, files) => {
        if (err) throw err
        files.forEach(file => {
            // file 得到的是相对于templates的相对路径
            // console.log(file);

            // 通过模板引擎去渲染该路径的文件
            // 第一个参数为源文件的绝对路径,  第二个为获取用户交互结果，第三个执行成功回调函数
            ejs.renderFile(path.join(tmplDir, file), answers, (err, result) => {
                if (err) throw err

                // 获得渲染结果
                // console.log(result);

                // 文件写入模板目录
                fs.writeFileSync(path.join(desDir, file), result)
            })
        })
    })
})
